package com.ruoyi.xag.service;

import com.ruoyi.xag.domain.datapoints.SoilSenorDataPoints;
import com.ruoyi.xag.domain.datapoints.WeatherSenorDataPoints;
import com.ruoyi.xag.domain.iotdevice.IotDevice;
import org.apache.ibatis.annotations.Select;

import java.io.IOException;
import java.util.List;

/**
 * @author LiSuxuan
 * @date 2021年 06月 23日 19:24
 * 设备接口
 */
public interface DeviceService {

    /**
     * 查询用户设备列表
     *
     * @return 列表数据
     * @throws IOException
     */

    public List<IotDevice> selectDeviceList( ) throws IOException;

    /**
     * 新增最近一条气象传感器数据
     *
     * @param deviceId 根据设备ID新增
     * @return 返回影响行数
     * @throws IOException IO
     */
    public int insertWeatherDataPointLast(String deviceId) throws IOException;

    /**
     * 新增最近一条土壤传感器数据
     * @param deviceId 根据设备ID
     * @return 返回影响行数
     * @throws IOException IO
     */
    public int insertSoilDataPointLast( String deviceId) throws IOException;


    /**
     * 根据起止时间查询土壤传感器数据
     * @param deviceId 设备ID 唯一索引
     * @param start 开始时间
     * @param end 截止时间
     * @return 集合
     */
    public List<SoilSenorDataPoints> selectSoilHistoryData(String deviceId, int start, int end);

    /**
     * 根据起止时间查询气象传感器数据
     * @param deviceId 设备ID 唯一索引
     * @param start 开始时间
     * @param end 截止时间
     * @return 集合
     */
    public List<WeatherSenorDataPoints> selectWeatherHistoryData(String deviceId, int start, int end);


    /**
     * 查询气象传感器最近一条数据，用于首页展示
     * @param deviceId 设备唯一ID
     * @return 封装数据对象
     */
    public WeatherSenorDataPoints selectWeatherDataLast(String deviceId);

    /**
     * 查询土壤传感器最近一条数据，用于首页展示
     * @param deviceId 设备唯一ID
     * @return 封装数据对象
     */
    public SoilSenorDataPoints selectSoilDataLast(String deviceId);


    /**
     * 根据设备ID查询设备状态
     * @param deviceId 设备ID
     * @return 设备状态
     * @throws IOException IO异常
     */
    public IotDevice selectDeviceInfo(String deviceId) throws IOException;

}
